package com.hsgene.common.util.support;

import java.util.stream.Stream;

/**
 * 允许进行排序的字段/别名接口.
 *
 * @author wangbing
 * @version 1.0, 2018/7/25
 */
public interface OrderField {

    /**
     * 获取允许进行排序的字段/别名.
     *
     * @return 字段/别名Stream
     */
    Stream<String> getNames();

    /**
     * 检查是否允许指定字段/别名来排序.
     *
     * @param fieldName 指定字段/别名
     * @return 检查是否通过
     */
    boolean check(String fieldName);

    /**
     * 检查是否允许指定字段/别名来排序.
     *
     * @param orderField 要比较的接口实现类
     * @param fieldName  指定字段/别名
     * @return 检查是否通过
     */
    static boolean check(OrderField orderField, String fieldName) {
        return orderField.getNames().anyMatch(name -> name.equals(fieldName));
    }

}
